# @Time: 2025/3/9 21:25
# @Author: chenhui

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

from common.tools import get_project_path, sep


class DriverConfig:
    @staticmethod
    def driver_config():
        """
        浏览器驱动
        :return:
        """
        options = webdriver.ChromeOptions()
        options.add_argument("disable-infobars")
        # 设置窗口大小
        options.add_argument("window-size=1920,1080")
        # 无头模式
        # options.add_argument('--headless')
        # 解决卡顿
        options.add_argument("--disable-gpu")
        options.add_argument("--no-sanbox")
        options.add_argument('--disable-dev-shm-usage')
        # 解决selenium无法访问https的问题
        options.add_argument("--ignore-certificate-errors")
        options.add_argument("--allow-insecure-localhost")
        # 无痕模式
        # options.add_argument("--incognito")
        # 去除"chrome正受到自动测试软件的控制"
        options.add_experimental_option(
            "excludeSwitches", ["enable-automation"]
        )
        # 实例化浏览器驱动   驱动位于项目文件夹下，固定位置
        driver = webdriver.Chrome(
            executable_path=get_project_path() + sep(["driver_files", "chromedriver"], add_sep_before=True),
            options=options)
        # 使用webdriverManager管理驱动，自动判断版本更新
        # driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)


        # 隐性等待时间
        driver.implicitly_wait(3)
        # 删除所有cookies
        driver.delete_all_cookies()
        return driver
